package daily.oct;

import java.util.HashMap;

public class lc2048 {
    public int nextBeautifulNumber(int n) {
        for (int i=n+1; ;i++){
            if (isBanlance(i)){
                return i;
            }
        }
    }

    boolean isBanlance(int i) {
        String s = Integer.toString(i);
        HashMap<Character, Integer> map = new HashMap<>();
        for (char c : s.toCharArray()) {
            map.put(c, map.getOrDefault(c, 0) + 1);//循环遍历得出整数i中各数字的出现次数
        }
        if (map.containsValue(0)){//平衡数中不允许0的出现，若出现直接返回false
            return false;
        }
        for (char c : map.keySet()) {
            int count = map.get(c);//数字出现的次数
            int digit = c - '0';//从char类型转为int类型，得到当前的数字
            if (digit!=count){//判断每个key和value之间是否相等（是否符合平衡数的定义）
                return false;
            }
        }
        return true;
    }

    public static void main(String[] args) {
        lc2048 lc = new lc2048();
        System.out.println(lc.nextBeautifulNumber(1));
        System.out.println(lc.nextBeautifulNumber(1000));
        System.out.println(lc.nextBeautifulNumber(3000));
    }
}
